<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>tmrctr: xtmrctr_intr_example.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">tmrctr
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xtmrctr__intr__example_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xtmrctr_intr_example.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file contains a design example using the timer counter driver (XTmCtr) and hardware device using interrupt mode.This example assumes that the interrupt controller is also present as a part of the system. </p>
<p>This file can be used as a standalone example or by the TestAppGen utility to include a test for Timer interrupts.</p>
<pre>
 MODIFICATION HISTORY:</pre><pre> Ver   Who  Date         Changes
</p>
<hr/>
<p>
 1.00b jhl  02/13/02 First release
 1.00b sv   04/26/05 Minor changes to comply to Doxygen and coding guidelines
 1.00b sn   05/09/06 Modified to be used by TestAppGen to include test for
                      interrupts.
 2.00a ktn  10/30/09 Updated to use HAL API's and minor changes as per coding
                      guidelines.
 2.00a ssb  01/11/01 Updated the example to be used with the SCUGIC in
                      Zynq.
 4.2   ms   01/23/17 Added xil_printf statement in main function to
                     ensure that "Successfully ran" and "Failed" strings
                     are available in all examples. This is a fix for
                     CR-965028.
 4.5   mus  07/05/18 Updated example to call TmrCtrDisableIntr function
                     with correct arguments. Presently device id is
                     being passed instead of interrupt id. It fixes
                     CR#1006251.
 4.5   mus  07/05/18 Fixed checkpatch errors and warnings.
 4.9   mus  11/26/21 Existing example shows incorrect behavior if it
                     gets included in peripheral test, and targeted HW
                     design has more than one AXI timer instances. This
                     is due to TimerExpired variable, which is shared
                     between interrupt context and main thread. As it
                     is not getting initialized to 0 for subsequent
                     TmrCtrIntrExample calls, interrupt example test for 2nd
                     and subsequent AXI timer instances would be passed
                     without generating interrupts. It fixes CR#1116308.
 4.12  ml   12/07/23 Make TimerExpired as a static variable.
 4.12  mus  03/25/24 Update RESET_VALUE to reduce extecution time to 1 seconds.
</pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a5d61a920b9e37a9d8c2241c0e749992d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xtmrctr__intr__example_8c.html#a5d61a920b9e37a9d8c2241c0e749992d">TmrCtrIntrExample</a> (INTC *IntcInstancePtr, <a class="el" href="struct_x_tmr_ctr.html">XTmrCtr</a> *TmrCtrInstancePtr, u16 DeviceId, u16 IntrId)</td></tr>
<tr class="memdesc:a5d61a920b9e37a9d8c2241c0e749992d"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function does a minimal test on the timer counter device and driver as a design example.  <a href="#a5d61a920b9e37a9d8c2241c0e749992d">More...</a><br/></td></tr>
<tr class="separator:a5d61a920b9e37a9d8c2241c0e749992d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840291bc02cba5474a4cb46a9b9566fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xtmrctr__intr__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a> (void)</td></tr>
<tr class="memdesc:a840291bc02cba5474a4cb46a9b9566fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function is the main function of the Tmrctr example using Interrupts.  <a href="#a840291bc02cba5474a4cb46a9b9566fe">More...</a><br/></td></tr>
<tr class="separator:a840291bc02cba5474a4cb46a9b9566fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a840291bc02cba5474a4cb46a9b9566fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function is the main function of the Tmrctr example using Interrupts. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">None.</td><td></td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS to indicate success, else XST_FAILURE to indicate a Failure.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="xtmrctr__intr__example_8c.html#a5d61a920b9e37a9d8c2241c0e749992d">TmrCtrIntrExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a5d61a920b9e37a9d8c2241c0e749992d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int TmrCtrIntrExample </td>
          <td>(</td>
          <td class="paramtype">INTC *&#160;</td>
          <td class="paramname"><em>IntcInstancePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_x_tmr_ctr.html">XTmrCtr</a> *&#160;</td>
          <td class="paramname"><em>TmrCtrInstancePtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>DeviceId</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>IntrId</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function does a minimal test on the timer counter device and driver as a design example. </p>
<p>The purpose of this function is to illustrate how to use the <a class="el" href="struct_x_tmr_ctr.html" title="The XTmrCtr driver instance data. ">XTmrCtr</a> component. It initializes a timer counter and then sets it up in compare mode with auto reload such that a periodic interrupt is generated.</p>
<p>This function uses interrupt driven mode of the timer counter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">IntcInstancePtr</td><td>is a pointer to the Interrupt Controller driver Instance </td></tr>
    <tr><td class="paramname">TmrCtrInstancePtr</td><td>is a pointer to the <a class="el" href="struct_x_tmr_ctr.html" title="The XTmrCtr driver instance data. ">XTmrCtr</a> driver Instance </td></tr>
    <tr><td class="paramname">DeviceId</td><td>is the XPAR_&lt;TmrCtr_instance&gt;_DEVICE_ID value from xparameters.h </td></tr>
    <tr><td class="paramname">IntrId</td><td>is XPAR_&lt;INTC_instance&gt;_&lt;TmrCtr_instance&gt;_INTERRUPT_INTR value from xparameters.h </td></tr>
    <tr><td class="paramname">TmrCtrNumber</td><td>is the number of the timer to which this handler is associated with.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if the Test is successful, otherwise XST_FAILURE</dd></dl>
<dl class="section note"><dt>Note</dt><dd>This function contains an infinite loop such that if interrupts are not working it may never return. </dd></dl>

<p>References <a class="el" href="struct_x_tmr_ctr.html#a1fc51ca5db0c37e2b9b8db794f8a7496">XTmrCtr::Config</a>, <a class="el" href="xtmrctr__fast__intr__example_8c.html#afa0cce7d285718e72442102d4bf56e5a">TimerCounterHandler()</a>, <a class="el" href="group___overview.html#gad5f9b6172f448d2dd13d1c200ca37928">XTmrCtr_Initialize()</a>, <a class="el" href="group___overview.html#ga2c00e99b19f58b5821c5541069ffb20b">XTmrCtr_InterruptHandler()</a>, <a class="el" href="group___overview.html#ga42b972b6d7ae5d18a9bb2ca99446b1e7">XTmrCtr_SelfTest()</a>, <a class="el" href="group___overview.html#ga9eb7b372c13b5e3493fec7370858309f">XTmrCtr_SetHandler()</a>, <a class="el" href="group___overview.html#ga93d796cf55144d6adb3c51fedf6c3b76">XTmrCtr_SetOptions()</a>, <a class="el" href="group___overview.html#ga74b790866611a3ab1e96700feb48f6ea">XTmrCtr_SetResetValue()</a>, <a class="el" href="group___overview.html#ga009c17ab4fcedf73279638dd97b6edd4">XTmrCtr_Start()</a>, and <a class="el" href="group___overview.html#gab8156ff2a16b8efc0fcd3ed2b7ecf91a">XTmrCtr_Stop()</a>.</p>

<p>Referenced by <a class="el" href="xtmrctr__intr__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
